#include <iostream>
#include <string>
#include <cstdlib>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <string>

void Usage(std::string proc)
{
    std::cout<<"\n\tUsage"<<proc<<std::endl<<std::endl;
}

void myhandler(int signo)
{
    std::cout<<"get a signo : "<<signo<<std::endl;
    //exit(1);
}

int main(int argc , char* argv[])
{
    // signal(2,myhandler);  //只设置一次 往后都有效
    
    // //信号的产生与代码的运行是异步的
    // while(true)
    // {
    //     std::cout<<"I am a process : "<<getpid()<<std::endl;
    //     sleep(1);
    // }

    // if(argc!=3)
    // {
    //     Usage(argv[0]);
    //     exit(1);
    // }
    // int signum=std::stoi(argv[1]);
    // pid_t id=std::stoi(argv[2]);

    // int n=kill(id,signum);
    // if(n==-1)
    // {
    //     perror("kill");
    //     exit(1);
    // }

    signal(SIGABRT, myhandler);
    int cnt = 0;
    while (true)
    {
        std::cout << "I am a process, pid: " << getpid() << std::endl;
        sleep(1);
        cnt++;
        if(cnt % 2 == 0) 
        {
            //kill(getpid(), 2);
            //raise(2);
            //abort();
            kill(getpid(), 6);
        }
    }


    return 0;
}